import baostock as bs
import pandas as pd

#### 登陆系统 ####
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)

#### 此处更新需要的股票和时间始末 ####

股票代码 = "sz.300413"  # 股票代码，sh或sz.+6位数字代码，或者指数代码，如：sh.601398。sh：上海；sz：深圳。此参数不可为空
开始日期 = "2022-01-01"  # 开始日期
结束日期 = "2024-08-02"  # 结束日期
数据类型 = "d"  # 数据类型，d=日k线 w=周线 m=月线 5=5分钟 15=15分钟 30=30分钟 60=60分钟，默认为d
复权方式 = "3"  # 复权方式，默认为3(前复权)，1(后复权) 2(不复权)

#### 获取沪深A股历史K线数据 ####
# 详细指标参数，参见“历史行情指标参数”章节；“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
# 分钟线指标：date,time,code,open,high,low,close,volume,amount,adjustflag
# 周月线指标：date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
rs = bs.query_history_k_data_plus(股票代码,
    "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
    start_date=开始日期, end_date=结束日期,
    frequency=数据类型, adjustflag=复权方式)
print('query_history_k_data_plus respond error_code:'+rs.error_code)
print('query_history_k_data_plus respond  error_msg:'+rs.error_msg)

#### 打印结果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():
    # 获取一条记录，将记录合并在一起
    data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)

#### 结果集输出到'历史股票数据+股票代码+数据类型+复权方式.csv'文件 ####   
# 输出文件名将股票代码，数据类型，复权方式拼接 到文件名中 ，方便查找 #
result.to_csv("历史股票数据+"+股票代码+"+"+数据类型+"+"+复权方式+".csv", index=False)

result.to_csv("历史股票数据+股票代码+数据类型+复权方式.csv", index=False)
print(result)

#### 登出系统 ####
bs.logout()